home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’92 / RISCy Bitsness / cpu2 / cache.v < prev    next >
Encoding:
Verilog source code  |  1992-06-18  |  600 b   |  30 lines  |  [TEXT/MPS ]

  1. module cache(reset, addr, read_data, read_hit, write_data, write);
  2.  
  3.     input            reset,
  4.                     write;
  5.     output            read_hit;
  6.     input     [31: 0]addr,
  7.                     write_data;
  8.                     
  9.     output     [31: 0]read_data;
  10.     reg         [31: 0]tag[1024];
  11.     reg         [31: 0]data[1024];
  12.     reg                 valid[1024];
  13.     
  14.     integer            i;
  15.     
  16.     always @(negedge reset) begin
  17.         for (i = 0; i < 1024; i=i+1)
  18.             valid[i] = 0;
  19.     end
  20.     
  21.     assign read_hit = valid[addr[11:2]] && tag[addr[11:2]] == addr;
  22.     
  23.     assign read_data = data[addr[11:2]];
  24.     
  25.     always @(posedge write) begin
  26.         valid[addr[11:2]] = 1;
  27.         tag[addr[11:2]] = addr;
  28.         data[addr[11:2]] = write_data;
  29.     end
  30. endmodule